# 集合（set）是一个无序的不重复元素序列。
# 可以使用大括号 { } 或者 set() 函数创建集合，注意：创建一个空集合必须用 set() 而不是 { }，因为 { } 是用来创建一个空字典

# 创建集合
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
c = set(('a', 'c', "c"))
print(c)
print(basket)  # {'banana', 'pear', 'apple', 'orange'}
print('apple' in basket)  # True

# 下面展示两个集合间的运算.
a = set('abracadabra')
b = set('alacazam')

print(a, " ", b)  # {'d', 'a', 'b', 'r', 'c'}   {'a', 'l', 'c', 'm', 'z'}

# 集合支持集合推导式
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)  # {'d', 'r'}

# 增加
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
basket.add('葡萄')
print(basket)  # {'apple', 'orange', '葡萄', 'banana', 'pear'}

basket.update([1, 3], [4, 5])
print(basket)  # {'banana', 1, 3, 4, 5, '葡萄', 'apple', 'orange', 'pear'}

# 删除
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
# 不存在会发生错误
basket.remove('apple')
print(basket)  # {'banana', 'pear', 'orange'}
# 不存在不会发生错误
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
basket.discard('apple')
print(basket)  # {'banana', 'pear', 'orange'}
# 随机删除一个
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
basket.pop()
print(basket)
# 查询
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print('apple' in basket)  # True
# 清空集合
basket.clear()
print(basket)  # set()
del basket # 删除
# print(basket) 报错

# 集合操作函数如下
#
# add()	为集合添加元素
# clear()	移除集合中的所有元素
# copy()	拷贝一个集合
# difference()	返回多个集合的差集
# difference_update()	移除集合中的元素，该元素在指定的集合也存在。
# discard()	删除集合中指定的元素
# intersection()	返回集合的交集
# intersection_update()	返回集合的交集。
# isdisjoint()	判断两个集合是否包含相同的元素，如果没有返回 True，否则返回 False。
# issubset()	判断指定集合是否为该方法参数集合的子集。
# issuperset()	判断该方法的参数集合是否为指定集合的子集
# pop()	随机移除元素
# remove()	移除指定元素
# symmetric_difference()	返回两个集合中不重复的元素集合。
# symmetric_difference_update()	移除当前集合中在另外一个指定集合相同的元素，并将另外一个指定集合中不同的元素插入到当前集合中。
# union()	返回两个集合的并集
# update()	给集合添加元素
